#ifndef TYPE_DEFINE_HPP
#define TYPE_DEFINE_HPP

typedef float f32;
typedef int i32;
typedef short i16;
typedef unsigned short ui16;
typedef char i8;
typedef unsigned char ui8;
typedef unsigned int ui32;
typedef double f64;
typedef long long i64;
typedef unsigned long long ui64;

#define LOOP_VEC( statements, col ) \
  for ( ui8 i = 0; i < col; i++ ) { \
    statements                      \
  }

#define LOOP_TVEC( statements ) LOOP_VEC( statements, col )

// TODO: debug support
#define DEBUG_LOOP_TVEC( statements, debug_statements ) \
  LOOP_TVEC( statements )                               \
  debug_statements

#define LOOP_TMAT( statement, iterations )     \
  for ( ui8 i = 0; i < ( iterations ); i++ ) { \
    statement                                  \
  }

#define DEBUG_LOOP_TMAT( statement, iterations, debug_statements ) \
  LOOP_TMAT( statement, iterations )                               \
  debug_statements

#include <limits>

#endif // TYPE_DEFINE_HPP